import { getPermissionCodes } from "@/store/localStorage/index.js"
export default function registerDrective(app) {
	// 定义自定义指令
	app.directive('my-directive', {
	  // 当被绑定的元素挂载到 DOM 中时调用
	  mounted(el, binding) {
	    // 这里你可以对元素进行操作，例如添加事件监听器、修改样式等
	    console.log('my-directive=>元素已挂载:', el);
	    console.log('my-directive=>指令的绑定值:', binding.value);
	  },
	  // 当指令所在组件更新时调用
	  updated(el, binding) {
	    // 这里你可以根据绑定值更新元素的状态或行为
	    console.log('元素已更新:', el);
	    console.log('新的绑定值:', binding.value);
		el.style.background = binding.value.background
	  },
	  // 其他选项如 `beforeMount`, `beforeUpdate`, `beforeUnmount` 等可以根据需要定义
	})
	// 操作dom元素的权限
	app.directive('permission', {
		// 当被绑定的元素挂载到 DOM 中时调用
		mounted(el, binding) {
			// 这里你可以对元素进行操作，例如添加事件监听器、修改样式等
			console.log('mounted=>permission=>元素已挂载:', el);
			console.log('mounted=>permission=>指令的绑定值:', binding.value);
			let allPermission = getPermissionCodes()
			if (binding.value && typeof binding.value === 'string' && allPermission.indexOf(binding.value) === -1) {
			  el.parentNode.removeChild(el)
			} else if (binding.value && typeof binding.value === 'object') {
			  let flag = true // 为true的时候删除节点，因为没权限
			  binding.value.forEach(v => {
				if (allPermission.indexOf(v) > -1) {
				  flag = false
				}
			  })
			  if (flag) {
				el.parentNode.removeChild(el)
			  }
			}
		}
	})
}